/**
 * 认证与授权模块类型定义
 */
import type { UserApi } from './user'; // 导入UserApi命名空间以引用UserInfoVO类型

/**
 * 认证与授权相关API命名空间
 */
export namespace AuthApi {
  /**
   * 登录参数
   */
  export interface LoginParams {
    /**
     * 用户名
     */
    username: string;

    /**
     * 密码
     */
    password: string;
  }

  /**
   * 登录结果
   */
  export interface LoginResult {
    /**
     * 访问令牌
     */
    token: string;

    /**
     * 过期时间（秒）
     */
    expire?: number;

    /**
     * 用户信息（可选）
     */
    userInfo?: UserApi.UserInfoVO;
  }

  export interface MenuMeta {
    /**
     * 排序
     */
    order: number;

    /**
     * 标题
     */
    title: string;

    /**
     * 图标
     */
    icon: string;

    /**
     * 是否在菜单中隐藏
     */
    hideInMenu: boolean;

    /**
     * iframe源地址
     */
    iframeSrc: string;

    /**
     * 是否为外部链接
     */
    link: boolean;

    /**
     * 外部链接地址
     */
    href: string;

    /**
     * 是否保持页面状态
     */
    keepAlive: boolean;

    /**
     * 查询参数
     */
    query: string;
  }

  /**
   * 菜单路由信息
   */
  export interface RouteItem {
    /**
     * 元数据配置
     */
    meta: MenuMeta;

    /**
     * 路由名称
     */
    name: string;

    /**
     * 路由路径
     */
    path: string;

    /**
     * 重定向地址
     */
    redirect: string;

    /**
     * 组件路径
     */
    component: string;

    /**
     * 子路由
     */
    children: RouteItem[];
  }

  /**
   * 刷新令牌结果
   */
  export interface RefreshTokenResult {
    /**
     * 新的访问令牌
     */
    data: string;

    /**
     * 状态码
     */
    status: number;
  }

  /**
   * 注册参数
   */
  export interface RegisterParams {
    /**
     * 用户名
     */
    username: string;

    /**
     * 密码
     */
    password: string;

    /**
     * 昵称
     */
    nickname: string;

    /**
     * 邮箱（可选）
     */
    email?: string;

    /**
     * 手机号（可选）
     */
    phone?: string;
  }

  /**
   * 注册结果
   */
  export interface RegisterResult {
    /**
     * 用户ID
     */
    id: number;

    /**
     * 用户名
     */
    username: string;

    /**
     * 昵称
     */
    nickname: string;

    /**
     * 邮箱
     */
    email?: string;

    /**
     * 手机号
     */
    phone?: string;

    /**
     * 头像
     */
    avatar?: string;

    /**
     * 状态
     */
    status: number;

    /**
     * 创建时间
     */
    createdTime: string;
  }
}
